﻿using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.Practices.EnterpriseLibrary.Validation.Validators;
using BussinessLogicTecnoPez;

namespace BussinessLogicTecnoPez.Produccion.Compras
{
    [Serializable]
    [DBTable("FACTORES")]
    public class Factor : EntityBase<Factor>
    {
        private int idFactor;
        private string descripcion;
        private bool maximizante;

        public Factor() : base() { }

        public Factor(int intIdFactor, string strDescripcion, bool booMaximizante)
        {
            this.idFactor = intIdFactor;
            this.descripcion = strDescripcion;
            this.maximizante = booMaximizante;
        }

        [FriendlyName("Código",true,true, FriendlyName.FilterType.Integer)]
        [DBField("IDFACTOR",true,true)]
        public int IdFactor
        {
            get { return idFactor; }
            set { idFactor = value; }
        }

        [NotNullValidator(MessageTemplate = "Descripción: Debe tener algun valor.")]
        [StringLengthValidator(0, 150, MessageTemplate = "Descripción: Tamaño máximo es de 150 carateres.")]
        [TecnoPezNoEmptyStringValidator("Descripción: Debe tener algun valor.")]
        [FriendlyName("Descripción", true, true, FriendlyName.FilterType.String)]
        [DBField("DESCRIPCION",false,false)]
        public string Descripcion
        {
            get
            {
                if (descripcion == null)
                    return null;
                else
                    return descripcion.Trim();
            }
            set { descripcion = value; }
        }

        [FriendlyName("Maximizante", false)]
        [DBField("MAXIMIZANTE",false,false)]
        public bool Maximizante
        {
            get { return maximizante; }
            set { maximizante = value; }
        }

        [FriendlyName("Tipo", true)]
        public string Tipo
        {
            get 
            {
                if (this.Maximizante == false)
                    return "Minimizante";
                else
                    return "Maximizante";
            }
        }

        public override string ToString()
        {
            return this.Descripcion;
        }
    }
}
